package com.ruoyi.web.controller.mes;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.pinyin.PinYinUtils;
import com.ruoyi.web.domain.mes.MesOrder;
import com.ruoyi.web.domain.mes.MesOrderProduct;
import com.ruoyi.web.mapper.MesConfigMapper;
import com.ruoyi.web.mapper.MesOrderMapper;
import com.ruoyi.web.service.MesOrderService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

@RestController
@RequestMapping("/mes/order")
public class MesOrderController {
    @Resource
    private MesOrderService mesOrderService;
    @Resource
    private MesConfigMapper configMapper;
    @Resource
    private MesOrderMapper mesOrderMapper;
    /**
     * 订单管理 -- 查询
     * @Date: 2024年1月9日
     * @Auth: 张恒
     */
    @GetMapping("/getMesOrderInfo")
    public TableDataInfo getMesOrderInfo(MesOrder mesOrder){
        return mesOrderService.getMesOrderInfo(mesOrder);
    }

    /**
     * 订单管理 -- 查询明细
     * @Date: 2024年1月9日
     * @Auth: 张恒
     */
    @GetMapping("/getMesOrderDetail")
    public AjaxResult getMesOrderDetail(MesOrder mesOrder){
        return mesOrderService.getMesOrderDetail(mesOrder);
    }

    /**
     * 订单管理 -- 新增
     * @Date: 2024年1月9日
     * @Auth: 张恒
     */
    @PostMapping("/addMesOrderInfo")
    @RepeatSubmit(interval = 5000)
    public AjaxResult addMesOrderInfo(@RequestBody MesOrder mesOrder){
        return mesOrderService.addMesOrderInfo(mesOrder);
    }

    /**
     * 订单管理 -- 修改
     * @Date: 2024年1月9日
     * @Auth: 张恒
     */
    @PostMapping("/editMesOrderInfo")
    public AjaxResult editMesOrderInfo(@RequestBody MesOrder mesOrder){
        return mesOrderService.editMesOrderInfo(mesOrder);
    }
    //更改状态及作废
    @PostMapping("/updateStatus")
    public AjaxResult updateStatus(@RequestBody MesOrder mesOrder){
        mesOrderService.update(new UpdateWrapper<MesOrder>().lambda()
                .set(MesOrder::getVoidReason, mesOrder.getVoidReason())
                .set(MesOrder::getStatus, mesOrder.getStatus())
                .eq(MesOrder::getPid, mesOrder.getPid()));
        return  AjaxResult.success("修改成功");
    }
//生成出版编码
    @GetMapping("/bookNo")
    public AjaxResult bookNo(){
//        Map<String, Object> map = new HashMap<>();
//        map.put("columnName", "pub_no");
//        map.put("tableName", "mes_order");
//        int maxNum = configMapper.getYearMaxId(map);

//        String code = PinYinUtils.sequence(maxNum);
        MesOrder mesOrder= mesOrderMapper.selectMaxPubNo();
        if (mesOrder.getYear()==0){
            Calendar calendar = Calendar.getInstance();
            int currentYear = calendar.get(Calendar.YEAR);
            int nextYear = currentYear + 1;
            String pubNo=nextYear+"-0001";
            return AjaxResult.success("查询成功", pubNo);
        }else{
          String code= PinYinUtils.sequence(mesOrder.getNum());
          String pubNo=mesOrder.getYear()+"-"+code;
            return AjaxResult.success("查询成功", pubNo);
        }
    }
    /**
     * 订单管理 -- 删除
     * @Date: 2024年1月9日
     * @Auth: 张恒
     */
    @PostMapping("/delMesOrderInfo")
    public AjaxResult delMesOrderInfo(@RequestBody MesOrder mesOrder){
        return mesOrderService.delMesOrderInfo(mesOrder, 1); // 1删除订单，2删除品种
    }

    /**
     * 订单管理 -- 导出
     * @Date: 2024年1月9日
     * @Auth: 张恒
     */
    @PostMapping("/exportMesOrder")
    public AjaxResult exportMesOrder(@RequestBody MesOrder mesOrder){
        return mesOrderService.exportMesOrder(mesOrder);
    }
}
